import { apiUrMock } from "../../api.js";
import { apiUrl, StorageKeys } from "../../api.js";
import { developing, uploadFile } from "../../api.js";

const $api = require('../../utils/request.js');


//index.js
//获取应用实例
const app = getApp()

const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'

Page({
  data: {
    isEditingNickname: false, // 是否正在编辑昵称
    StatusBar: app.globalData.StatusBar,
    CustomBar: app.globalData.CustomBar,
    motto: 'Hi 开发者！',
    userInfo: {},
    hasUserInfo: false,
    canIUseGetUserProfile: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    imageURLList: [
      { url: "https://img.yzcdn.cn/vant/ipad.jpeg", id: 1 },
      { url: "https://img.yzcdn.cn/vant/ipad.jpeg", id: 2 },
      { url: "https://img.yzcdn.cn/vant/ipad.jpeg", id: 3 }
    ],
    hospitalList: []
  },
 

  //页面显示时调用(启动/页面从隐藏到启动)，可调用多次
  onLoad: function () {
    if (wx.getUserProfile) {
      console.log('wx.getUserProfile')
      this.setData({
        canIUseGetUserProfile: true
      })
    }
    //this.getHospitalList();
    //this.getList();
  },

  //页面显示时调用(启动/页面从隐藏到启动)，可调用多次
  onShow: function (e) {
    if (app.globalData.userInfo) {
      console.log('onShow app.globalData.userInfo',app.globalData.userInfo)
      this.setData({
        userInfo: app.globalData.userInfo,
        hasUserInfo: true
      })
    } 
    else {
      console.log(5)
      wx.navigateTo({
        url: '/pages/login/login',
      })
    }
    //这边可以指定 bar 选中样式
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({ selected: 0 }); // 0 是首页在 list 中的索引 
    } 
  },

  // 获取用户头像
  onChooseAvatar(e) {
    const avatarUrl = e.detail.avatarUrl; // 获取头像地址
    this.setData({
      userInfo: {
        ...this.data.userInfo, // 保留原有字段（如果有）
        avatarUrl: avatarUrl // 新增或覆盖 avatarUrl
      }
    });
    if (avatarUrl) {
      uploadFile(avatarUrl)
        .then((imageUrl) => {
          console.log('上传成功，图片 URL:', imageUrl);
          this.setData({
            //imageList: [...this.data.imageList, imageUrl] // 将新图片 URL 追加到列表
            userInfo: {
              ...this.data.userInfo, // 保留原有字段（如果有）
              avatarUrl: imageUrl.startsWith('http') ? imageUrl : apiUrl + imageUrl // 新增或覆盖 avatarUrl
            }
          });
          console.log('上传成功，图片 URL:', this.data.userInfo.avatarUrl);
          //更新缓存
          app.globalData.userInfo = this.userInfo; 
          wx.setStorageSync(StorageKeys.USERINFO, this.userInfo);
          //更新数据库
          this.updateProfile();
        })
        .catch((err) => {
          console.error('上传失败:', err);
          wx.showToast({
            title: '上传失败',
            icon: 'none'
          });
        });
    }
  },

  updateProfile() {
    var obj = {
      id: wx.getStorageSync(StorageKeys.TOKEN),
      nickName: this.data.userInfo.nickName,
      avatarUrl: '/' + this.data.userInfo.avatarUrl.match(/:\d+\/(.*)/)?.[1],
    };

    // 调用接口获取openid
    $api.post(apiUrl + '/member/save', obj)
      .then(res => {
        console.log(res)
      })
      .catch(err => {
        //请求失败
        console.log(err)
      })
  },

  // 开始编辑昵称
  startEditNickname() {
    this.setData({
      isEditingNickname: true,
      tempNickname: this.data.userInfo.nickName // 初始化输入框内容
    });
  },

  // 监听昵称输入
  onNicknameInput(e) {
    this.setData({
      tempNickname: e.detail.value
    });
  },

  // 确认昵称
  confirmNickname() {
    this.setData({
      isEditingNickname: false,
      userInfo: {
        ...this.data.userInfo, // 保留原有字段
        nickName: this.data.tempNickname
      }
      //'memberInfo.nickName':this.data.tempNickname
    });
    // 如果头像已选择，提交数据到服务器
    this.updateProfile();
  },

  //事件处理函数
  bindViewTap: function () {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },


  developing(e) {
    developing()
  },

  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认
    // 开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        app.globalData.userInfo = res.userInfo,
          app.globalData.hasUserInfo = true,
          this.setData({
            userInfo: res.userInfo,
            hasUserInfo: true
          })
      }
    })
  },

  getUserInfo: function (e) {
    console.log(e)
    app.globalData.userInfo = e.detail.userInfo
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
    wx.login({
      success(res) {
        console.log(res)
        var obj = {
          code: res.code,
          userInfo: app.globalData.userInfo
        };
        $api.post(apiUrl + '/auth/login', obj)
          .then(res => {
            //请求成功 
            console.log('getUserInfo')
            console.log(res)
            wx.setStorageSync(User.USERINFO, res.userInfo);
            wx.setStorageSync(User.TOKEN, res.token);
          })
          .catch(err => {
            hasUserInfo: false
            console.log(2)
            //请求失败
            console.log(err)
          })
      }
    })
  },

  /////////////////////////

  getList() {
    // 调用接口获取openid
    $api.get(apiUrMock.demo.hospital_list, '')
      .then(res => {
        //请求成功 
        let hospitalList = res;
        this.setData({
          hospitalList,
        })
      })
      .catch(err => {
        //请求失败
        console.log(err)
      })
  },

  async getHospitalList() {
    // 1 使用es7的async await来发送请求
    const res = await request({ url: "/hospital" });
    // this.Cates = res.data.message; 
    // 把接口的数据存入到本地存储中
    //  wx.setStorageSync("cates", { time: Date.now(), data: this.Cates });
    // 构造左侧的大菜单数据
    let hospitalList = res;
    this.setData({
      hospitalList,
    })
  },

})
